/*
已知学生类含有实例属性(姓名、学号、成绩)，实例方法（构造方法、getter方法)。
建立字符文件a.txt，第一行为一个整数(表示学生人数)，第二行开始，每行提供一个学生所需的实例属性值。
编写程序1，从a.txt输入学生人数和学生信息，建立学生数组。
将所有学生数组各元素写入二进制文件a.dat(a.dat的开头4字节为表示学生数的整数)。
编写程序2，从a.dat读出学生数据输出为字符文件b.txt(输入出格式同a.txt)。
编写程序3，读入a.dat数据，用随机文件方式删除成绩<60分的学生记录并存回a.dat。
（程序2用于检查程序1和程序2的结果是否正确）
 */
//程序2
import java.io.*;
import java.text.*;
public class Demo0502 {
    public static void main(String[] args) throws Exception{
        System.out.println("程序2......");
        String TxtFile = "C:\\Users\\98317\\Desktop\\JavaExerciseCode\\exci07\\src\\b.txt";
        String DatFile = "C:\\Users\\98317\\Desktop\\JavaExerciseCode\\exci07\\src\\a.dat";
        //dat文件
        ObjectInputStream ois = new ObjectInputStream(new BufferedInputStream(new FileInputStream(DatFile)));
        //获取学生人数
        byte[] b = new byte[4];
        ois.read(b);
        int N = Chg.toInt(b); //转为整型数
        //获取学生信息
        PrintWriter pw = new PrintWriter(new BufferedOutputStream(new FileOutputStream(TxtFile)));
        //写入b.txt
        pw.printf("%d\r\n", N);
        for (int i = 0; i < N; i++) {
            Student stu = (Student)ois.readObject(); //得到Student类型的数据
            DecimalFormat fmt= new DecimalFormat("##.##"); //数字格式化
            pw.println(stu.getName() + " " + stu.getId() + " " + fmt.format(stu.getScore())); //写入
        }
        System.out.println("成功写入b.txt！");
        ois.close();
        pw.close();
    }
}
